package android.medicalcloud.com.yiapp.base.utils;


import java.io.File;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * 通用工具
 * 日期时间工具
 *
 * @version 1.0 以下所有变量长度未作说明的则由java定义决定,默认情况下，返回null或-1为失败
 */
public class DateTools {
    public static final String DATE_FORMAT_STYLE_1 = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMAT_STYLE_2 = "yyyy-MM-dd";
    public static final String DATE_FORMAT_STYLE_3 = "yyyy年M月d日 HH:mm";

    /**
     * 获得当前时间并且以String类型返回。
     *
     * @return 返回的时间格式yyyyMMddHHmmss。
     */
    public static String getDate() {
        return dateFormatterOfDateTimeForNow("yyyyMMddHHmmss");
    }

    /**
     * 获得当前时间。时间格式根据fmt进行格式化
     *
     * @param fmt 日期格式
     * @return 返回的时间格式根据fmt格式生成
     */
    public static String dateFormatterOfDateTimeForNow(String fmt) {
        Date myDate = new Date(System.currentTimeMillis());
        SimpleDateFormat sDateformat = new SimpleDateFormat(fmt);
        return sDateformat.format(myDate).toString();
    }


    public static String dateFormatterOfDateTime(String fmt, long time) {
        Date myDate = new Date(time);
        SimpleDateFormat sDateformat = new SimpleDateFormat(fmt);
        return sDateformat.format(myDate).toString();
    }

    public static String formatPhotoDate(String path) {
        File file = new File(path);
        if (file.exists()) {
            long time = file.lastModified();
            return formatPhotoDate(time);
        }
        return "1970-01-01";
    }

    public static String formatPhotoDate(long time) {
        return timeFormat(time, "yyyy-MM-dd");
    }

    public static String timeFormat(long timeMillis, String pattern) {
        SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.CHINA);
        return format.format(new Date(timeMillis));
    }

    public static Calendar getCal(String strdate, String fmt) {
        Calendar cal = null;
        try {
            if ((strdate != null) && (fmt != null)) {
                TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

                SimpleDateFormat nowDate = new SimpleDateFormat(fmt);
                Date d = nowDate.parse(strdate, new ParsePosition(0));
                if (d != null) {
                    cal = Calendar.getInstance();
                    cal.clear();
                    cal.setTime(d);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return cal;
    }


}
